﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Data;

using VietStar.Library.Entity;
using VietStar.Library.Business;
public partial class control_client_listproduct : System.Web.UI.UserControl
{
    ProductBusiness prb = new ProductBusiness();
    KhuyenMaiBusiness kmb = new KhuyenMaiBusiness();
    #region Phân trang
    #region Private Properties
    private int CurrentPage
    {
        get
        {
            object objPage = ViewState["_CurrentPage"];

            int _CurrentPage = 0;
            if (objPage == null)
            {
                _CurrentPage = 0;
            }
            else
            {
                _CurrentPage = (int)objPage;
            }
            return _CurrentPage;
        }
        set { ViewState["_CurrentPage"] = value; }
    }
    private int fistIndex
    {
        get
        {

            int _FirstIndex = 0;
            if (ViewState["_FirstIndex"] == null)
            {
                _FirstIndex = 0;
            }
            else
            {
                _FirstIndex = Convert.ToInt32(ViewState["_FirstIndex"]);
            }
            return _FirstIndex;
        }
        set { ViewState["_FirstIndex"] = value; }
    }
    private int lastIndex
    {
        get
        {

            int _LastIndex = 0;
            if (ViewState["_LastIndex"] == null)
            {
                _LastIndex = 0;
            }
            else
            {
                _LastIndex = Convert.ToInt32(ViewState["_LastIndex"]);
            }
            return _LastIndex;
        }
        set { ViewState["_LastIndex"] = value; }
    }
    #endregion
    #region PagedDataSource
    PagedDataSource _PageDataSource = new PagedDataSource();
    #endregion
    #region Private Methods


    /// <summary>
    /// Binding Main Items List
    /// </summary>
    private void BindItemsList(List<ProductEntity> list)
    {

        //DataTable dataTable = dt;
        _PageDataSource.DataSource = list;
        _PageDataSource.AllowPaging = true;
        _PageDataSource.PageSize = 8;
        _PageDataSource.CurrentPageIndex = CurrentPage;
        ViewState["TotalPages"] = _PageDataSource.PageCount;

        this.lblPageInfo.Text = "Trang " + (CurrentPage + 1) + " trong tổng số " + _PageDataSource.PageCount + " trang";
        this.lbtnPrevious.Enabled = !_PageDataSource.IsFirstPage;
        this.lbtnNext.Enabled = !_PageDataSource.IsLastPage;
        this.lbtnFirst.Enabled = !_PageDataSource.IsFirstPage;
        this.lbtnLast.Enabled = !_PageDataSource.IsLastPage;

        this.dlProductList.DataSource = _PageDataSource;
        this.dlProductList.DataBind();
        this.doPaging();
    }

    /// <summary>
    /// Binding Paging List
    /// </summary>
    private void doPaging()
    {
        DataTable dt = new DataTable();
        dt.Columns.Add("PageIndex");
        dt.Columns.Add("PageText");
        fistIndex = CurrentPage - 5;
        if (CurrentPage > 5)
        {
            lastIndex = CurrentPage + 5;
        }
        else
        {
            lastIndex = 10;
        }
        if (lastIndex > Convert.ToInt32(ViewState["TotalPages"]))
        {
            lastIndex = Convert.ToInt32(ViewState["TotalPages"]);
            fistIndex = lastIndex - 10;
        }
        if (fistIndex < 0)
        {
            fistIndex = 0;
        }
        for (int i = fistIndex; i < lastIndex; i++)
        {
            DataRow dr = dt.NewRow();
            dr[0] = i;
            dr[1] = i + 1;
            dt.Rows.Add(dr);
        }
        this.dlPaging.DataSource = dt;
        this.dlPaging.DataBind();
    }
    #endregion
    #endregion

    protected void Page_Load(object sender, EventArgs e)
    {
        try
        {
            if (!IsPostBack)
            {                
                dlProductList.DataSource = prb.GetAll();
                dlProductList.DataBind();
                BindItemsList(prb.GetAll());
                if (prb.GetAll().Count == 0 || prb.GetAll().Count <= 8)
                {
                    PhanTrang.Visible = false;
                }
                else
                {
                    PhanTrang.Visible = true;
                }
            }
        }
        catch(Exception ex){}
        
    }

    protected void dlProductList_ItemCommand(object source, DataListCommandEventArgs e)
    {
        try
        {
            string url = "";
            url = "detailproduct.aspx?id=" + dlProductList.DataKeys[e.Item.ItemIndex].ToString();
            Response.Redirect(url);
        }
        catch (Exception ex) { }
    }
    protected void lbtnFirst_Click(object sender, EventArgs e)
    {
        CurrentPage = 0;
        //DataTable dt = PhotoGallery.LoadHinhAnhTheoLoai(_ten);
        BindItemsList(prb.GetAll());
    }
    protected void lbtnPrevious_Click(object sender, EventArgs e)
    {
        CurrentPage -= 1;
        //DataTable dt = PhotoGallery.LoadHinhAnhTheoLoai(_ten);
        BindItemsList(prb.GetAll());
    }
    protected void lbtnNext_Click(object sender, EventArgs e)
    {
        CurrentPage += 1;
        //DataTable dt = PhotoGallery.LoadHinhAnhTheoLoai(_ten);
        BindItemsList(prb.GetAll());
    }
    protected void lbtnLast_Click(object sender, EventArgs e)
    {
        CurrentPage = (Convert.ToInt32(ViewState["TotalPages"]) - 1);
        //DataTable dt = PhotoGallery.LoadHinhAnhTheoLoai(_ten);
        this.BindItemsList(prb.GetAll());
    }
    protected void dlPaging_ItemCommand(object source, DataListCommandEventArgs e)
    {
        if (e.CommandName.Equals("Paging"))
        {
            CurrentPage = Convert.ToInt16(e.CommandArgument.ToString());
            //DataTable dt = PhotoGallery.LoadHinhAnhTheoLoai(_ten);
            BindItemsList(prb.GetAll());
        }
    }
    protected void dlPaging_ItemDataBound(object sender, DataListItemEventArgs e)
    {
        LinkButton lnkbtnPage = (LinkButton)e.Item.FindControl("lnkbtnPaging");
        if (lnkbtnPage.CommandArgument.ToString() == CurrentPage.ToString())
        {
            lnkbtnPage.Enabled = false;
            lnkbtnPage.Style.Add("fone-size", "14px");
            lnkbtnPage.Font.Bold = true;

        }
    }
}